#include <iostream>
#include <gtest/gtest.h>
#include <unordered_map>

// TEST(test,graete){

// }

// int main(int argc,char* argv[])
// {
//     //1. 初始化test
//     testing::InitGoogleTest(&argc,argv);//将可变参数传递进去，并且把传递argc的地址
//     //2. 运行测试类
//     RUN_ALL_TESTS();

//     return 0;
// }
// std::unordered_map<std::string,std::string> _dict;
// class HashTest : public testing::Environment{
// public:
//     virtual void SetUp() override{
//         std::cout << "测试前：提前准备数据" << std::endl;
//         _dict.insert(std::make_pair("hello","你好"));
//         _dict.insert(std::make_pair("apple","苹果"));
//     }
//     virtual void TearDown()override{
//         std::cout << "测试结束后：清理数据" << std::endl;
//         _dict.clear();
//     }
// };

// TEST(HashTest1, test1) {
//     ASSERT_EQ(_dict.size(), 2);
//     _dict.erase("hello");
// }

// TEST(HashTest2_test1_Test, test1) {
//     ASSERT_EQ(_dict.size(), 2);
// }
// int main(int argc,char* argv[])
// {
//     testing::InitGoogleTest(&argc,argv);
//     testing::AddGlobalTestEnvironment(new HashTest);
//     //调用AddGlobalTestEnvironment new 一个全局测试类
//     RUN_ALL_TESTS();
//     return 0;
// }

#include <iostream>
#include <gtest/gtest.h>
#include <unordered_map>

class MyTest : public testing::Test {
    public:
        static void SetUpTestCase() {
            std::cout << "所有单元测试前执行，初始化总环境!\n";
            //假设我有一个全局的测试数据容器，在这里插入公共的测试数据
        }
        void SetUp() override {
            //在这里插入每个单元测试所需的独立的测试数据
            std::cout << "单元测试初始化！！\n";
            _mymap.insert(std::make_pair("hello", "你好"));
            _mymap.insert(std::make_pair("bye", "再见"));
        }
        void TearDown() override {
            //在这里清理每个单元测试自己插入的数据
            _mymap.clear();
            std::cout << "单元测试清理！！\n";
        }
        static void TearDownTestCase() { 
            //清理公共的测试数据
            std::cout << "所有单元测试完毕执行，清理总环境!\n";
        }
    public:
        std::unordered_map<std::string, std::string> _mymap;
};

TEST_F(MyTest, insert_test) {
    _mymap.insert(std::make_pair("leihou", "你好"));
    ASSERT_EQ(_mymap.size(), 3);
    
}
TEST_F(MyTest, size_test) {
    ASSERT_EQ(_mymap.size(), 2);
}


int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    RUN_ALL_TESTS();
    return 0;
}   
